package com.neuedu.javase.io;

import java.io.*;

/***
 * 项目名称:  MyJavaSE 
 * 包：  com.neuedu.javase.io 
 * date:   2025/11/6   9:07  
 * 描述:  
 *  @author : 张金山
 *  作者博客:   https://blog.fulfill.com.cn
 */
public class BufferReaderAndWriter {


    public static  void read(){
        // 使用字符流
        String file = "d:\\upload\\introduce.txt";
        FileReader fr = null;
        try {
            fr = new FileReader(file);


            //一次读一个字符
            // char readChar = (char) fr.read();

            // System.out.println((char) fr.read());
            // System.out.println((char) fr.read());
            // System.out.println((char) fr.read());
            // System.out.println((char) fr.read());

            //使用缓冲区读取
            char[] buf = new char[1024];
            StringBuffer sbuffer = new StringBuffer();
            int len = 0;
            while (   (len = fr.read(buf)) != -1 ){
                sbuffer.append(buf, 0, len);
            }

            System.out.println("读取到的内容:\r\n" + sbuffer.toString());


        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if(fr != null){
                try {
                    fr.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }

    }



    public static void main(String[] args) {
        //创建一个文件， 写入内容 test1.txt
        String file = "d:\\upload\\test1.txt";
        String file2 = "d:\\upload\\test2.txt";
        String content = "近日，有网友发文称浙江大学玉泉校区食堂售卖的螃蟹价格十分亲民，仅需8.8元一只，引发热议。众多网友纷纷表示羡慕不已，甚至直呼“馋哭了”。记者随即联系了浙江大学后勤集团，相关工作人员回应表示，校内食堂主要服务于学生群体，其定价机制依据校内系统进行设定，并非有意与校外市场价格进行对比。华中师范大学梅志罡教授指出，大学食堂价格较低得益于资源渠道、集中采购及财政补贴三方面支持。\n" +
                "\n" +
                "\n" +
                "网友所附照片显示，浙江大学食堂内供应清蒸螃蟹，分为两种规格，小的标价8.8元一只，大的12.8元一只。\n" +
                "\n" +
                "\n" +
                "经视直播记者随后联系浙江大学后勤集团。工作人员表示，浙江大学设有多个食堂，主要为方便在校学生就餐。“学校有专门的采购供应部门，螃蟹属于直接采购。我们并非刻意与校外比价，而是根据校内定价系统确定价格，对校外市场价格并不太了解。”\n" +
                "\n" +
                "\n" +
                "工作人员还介绍，学校食堂会随季节变化推出时令菜品，但螃蟹自本周起已停止销售。“随着天气转冷，螃蟹已停售，部分原因是避免销售剩余造成浪费。”\n" +
                "\n" +
                "同时，工作人员补充说明，目前校外人员经预约也可进入浙江大学，并在多个食堂用餐。\n" +
                "\n" +
                "华中师范大学社会学院梅志罡教授对此现象分析称：“许多大学食堂的菜品价格低于校外，主要有三方面原因。其一，大学食堂无论自营或外包，均以平价方式使用公共资源；其二，不少高校拥有自建的蔬菜、粮油供应渠道，通过集中采购降低成本；其三，国家财政对每位学生均有伙食补贴，这为食堂降价提供了空间。”\n" +
                "\n" +
                "编辑：林夕合\n" +
                "\n" +
                "审核：吴祈\n" +
                "\n" +
                "【来源：经视直播】\n" +
                "\n" +
                "声明：此文版权归原作者所有，若有来源错误或者侵犯您的合法权益，您可通过邮箱与我们取得联系，我们将及时进行处理。邮箱地址：jpbl@jp.jiupainews.com";

        FileWriter writer = null;
        FileWriter writer2 = null;
        FileReader fr = null;
        try {

            writer = new FileWriter(file);
            writer.write(content);
            writer.flush();




            // //2 读取文件到内存 test1.txt
            fr = new FileReader(file);
            writer2 = new FileWriter(file2);


            BufferedReader br = new BufferedReader(fr);
            String lineInfo = null;
            while ((lineInfo  = br.readLine())  != null){

                writer2.write(lineInfo+"\r\n");
                writer2.flush();
                // System.out.println(lineInfo);
            }




        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if(writer != null){
                try {
                    writer.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            if(writer2 != null){
                try {
                    writer2.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }


    }





        //文件写入到   test2.txt









}
